home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib05.dsk / APPLE TRICKS - PROTECT.int < prev    next >
Text File  |  2023-02-26  |  5KB  |  164 lines

  1. 1 REM  ******************************
  2. 2 REM  *  APPLE TRICKS - PROTECT    *
  3. 3 REM  *    BY CRAIG  CROSSMAN      *
  4. 4 REM  *    COPYRIGHT (C) 1981      *
  5. 5 REM  *    BY MICRO-SPARC INC      *
  6. 6 REM  *      (INTEGER BASIC)       *
  7. 7 REM  ******************************
  8. 10 GOTO 100
  9. 32 REM 
  10. 40 CONT=0
  11. 42 TRACK= PEEK (RIB):SECT= PEEK (RIB+1)
  12. 44 CMD=1
  13. 46 GOSUB 550:REM  READ T/S LIST
  14. 48 FOR P=12 TO 255 STEP 2
  15. 50 TRACK= PEEK (BUF+P):SECT= PEEK (BUF+P+1)
  16. 52 IF TRACK+SECT=0 THEN RETURN 
  17. 54  POKE IOB+8,0: POKE IOB+9,ADDR
  18. 56 CMD=1:GOSUB 700
  19. 58 ADDR=ADDR+1
  20. 60 CONT=CONT+1
  21. 62 IF CONT<MS THEN 66
  22. 64 CONT=-CONT:RETURN 
  23. 66 NEXT P
  24. 68 TRACK= PEEK (BUF+1):SECT= PEEK (BUF+2)
  25. 70 IF TRACK+SECT#0 THEN 44
  26. 74 RETURN 
  27. 100 REM  SINGLE DRIVE FILE TRANSFER
  28. 150 REM  PROGRAM.
  29. 200 REM 
  30. 250 TEXT :CALL -936
  31. 310 X=0
  32. 350 DIM F$(30)
  33. 400 DIM FS(10),FL(10),FT(10)
  34. 450 D$="<CTRL-D>":REM  CTL D
  35. 460 GOSUB 7700
  36. 500 GOTO 1250
  37. 550 REM 
  38. 650  POKE IOB+8,BUFL: POKE IOB+9,BUFH
  39. 700  POKE IOB+4,TRACK
  40. 750  POKE IOB+5,SECT
  41. 800  POKE IOB+12,CMD
  42. 850  POKE IOB+3,0
  43. 900 CALL 659
  44. 950 STS= PEEK (IOB+13)
  45. 1000 IF STS=0 THEN RETURN 
  46. 1050 PRINT "I/O ERROR STATUS=";STS:PRINT "TRACK=";TRACK;" SECTOR=";SECT:END 
  47. 1250 LOM= PEEK (74)+ PEEK (75)*256
  48. 1260 FADD=LOM+11:XADD=LOM+4
  49. 1300 NAMES=LOM+512
  50. 1350 CALL 640
  51. 1400 X= PEEK (3):X1= PEEK (2):GOSUB 7100
  52. 1450 IOB=X
  53. 1500 X= PEEK (1):X1= PEEK (0):BUFL=X1:BUFH=X:GOSUB 7100
  54. 1550 BUF=X
  55. 1600 FREE=(NAMES+330)/256+1:REM  PAGE #
  56. 1650 FREEN= PEEK (203)
  57. 1700 PRINT "SINGLE DRIVE FILE TRANSFER PROGRAM"
  58. 1705 PRINT "WHICH DOS ARE YOU USING? TYPE A 2 FOR":INPUT "3.2 OR A 3 FOR 3.3",DT
  59. 1707 IF DT=2 THEN DT=12:IF DT=3 THEN DT=15:IF DT#12 AND DT#15 THEN 1705
  60. 1710 PRINT "WHERE IS THE TRACK IN DECIMAL WHERE THE":INPUT "CATALOG IS ON YOUR PROTECTED DISK?",QQQ
  61. 1750 ZZ=0:TRACK=17: POKE -21503,17:PRINT "INSERT MASTER DISKETTE":GOSUB 6650
  62. 1755 PRINT D$;"CATALOG"
  63. 1800 FREEH=FREE
  64. 1850 FOR NUMF=0 TO 10
  65. 1852 PRINT :PRINT : POKE 34,22
  66. 1855 IF CONT=0 THEN VTAB 23
  67. 1900 IF CONT=0 THEN INPUT "FILE NAME",F$
  68. 1950 CONT=0
  69. 2000 IF  LEN(F$)#0 THEN 2100
  70. 2050 CONT=-1:NUMF=NUMF-1:GOTO 3410
  71. 2100 GOSUB 6050
  72. 2150 IF RIB#0 THEN 2300
  73. 2200 PRINT "FILE NOT FOUND":FOR QQ=1 TO 1000:NEXT QQ:CALL -936:PRINT "<CTRL-D>CATALOG":GOTO 1855
  74. 2300 FT(NUMF)= PEEK (RIB+2)
  75. 2500 GOSUB 5000
  76. 2550 FL(NUMF)=FREEH
  77. 2600 ADDR=FREEH:MS=FREEN-FREEH:IF MS<=0 THEN 2750
  78. 2650 GOSUB 32
  79. 2700 IF CONT>=0 THEN 2800
  80. 2750 NUMF=NUMF-1:CONT=1:GOTO 3410
  81. 2800 FS(NUMF)=CONT:CONT=0
  82. 2850 FREEH=FREEH+FS(NUMF)
  83. 2855 VTAB 22
  84. 2900 PRINT "LEN:";FS(NUMF);F$
  85. 3200 NEXT NUMF
  86. 3250 NUMF=10
  87. 3410 TEXT :CALL -936
  88. 3450 PRINT "INSERT COPY DISKETTE":GOSUB 6650:ZZ=1: POKE IOB+4,QQQ: POKE -21503,QQQ
  89. 3460 PRINT D$;"CATALOG"
  90. 3500 FOR N=0 TO NUMF
  91. 3550 GOSUB 5600
  92. 3605 GOSUB 6050
  93. 3610 IF RIB=0 THEN 3640
  94. 3620 PRINT "DELETE FILE:";F$
  95. 3630 INPUT "(Y/N)",Y$:IF Y$#"Y" THEN 4400
  96. 3635 PRINT D$;"DELETE";F$
  97. 3640 PRINT "WRITING ";F$
  98. 3650 X1=4:X=FL(N):GOSUB 7100
  99. 3700 STRT=X:REM  START OF FILE DATA
  100. 3750 L=FS(N)*256-4:REM  LENGTH -HEADER
  101. 3800 IF  PEEK (STRT+L-2)=0 THEN L=L-1
  102. 3850 PRINT D$;"BSAVE ";F$;",A";STRT;",L";L
  103. 3900 REM 
  104. 3950 REM 
  105. 4000 REM 
  106. 4050 GOSUB 6050
  107. 4100  POKE RIB+2,FT(N)
  108. 4150 CMD=2:GOSUB 550
  109. 4200 TRACK= PEEK (RIB):SECT= PEEK (RIB+1):CMD=1:GOSUB 550:REM  T/S LIST
  110. 4250 TRACK= PEEK (BUF+12):SECT= PEEK (BUF+13):CMD=2
  111. 4300  POKE IOB+8,0: POKE IOB+9,FL(N)
  112. 4350 GOSUB 700
  113. 4400 NEXT N
  114. 4450 IF CONT=0 THEN 1750
  115. 4500 IF CONT<0 THEN 4560
  116. 4550 N=NUMF+1:GOSUB 5600:GOTO 1750
  117. 4560 PRINT D$;"CATALOG"
  118. 4600 END 
  119. 4650 REM 
  120. 5000 FP=NAMES+NUMF*30
  121. 5050 FOR I=1 TO  LEN(F$)
  122. 5100  POKE FP+I-1, ASC(F$(I)):NEXT I
  123. 5150 FOR I= LEN(F$) TO 29
  124. 5200  POKE FP+I,160
  125. 5250 NEXT I
  126. 5300 RETURN 
  127. 5600 FP=NAMES+N*30
  128. 5650 FOR I=0 TO 29
  129. 5700  POKE FADD+I, PEEK (FP+I):NEXT I
  130. 5750  POKE FADD+29, PEEK (FADD+29) MOD 128
  131. 5800 RETURN 
  132. 6050 REM 
  133. 6100 TRACK=17:SECT=DT:CMD=1:IF ZZ=1 THEN TRACK=QQQ
  134. 6150 GOSUB 550:IF STS=0 THEN 6250
  135. 6200 PRINT "READ ERROR STATUS=";STS:END 
  136. 6250 FOR RIB=BUF+11 TO BUF+255 STEP 35
  137. 6300 FOR I=1 TO  LEN(F$)
  138. 6350 IF  ASC(F$(I))# PEEK (RIB+2+I) THEN 6500
  139. 6400 NEXT I
  140. 6450 FOR I= LEN(F$)+1 TO 30:IF  PEEK (RIB+2+I)#160 THEN 6500:NEXT I:RETURN 
  141. 6500 NEXT RIB
  142. 6550 SECT= PEEK (BUF+2):IF SECT#0 THEN 6150
  143. 6600 RIB=0:RETURN 
  144. 6650 REM 
  145. 6800 PRINT "HIT ANY KEY TO CONTINUE"
  146. 6850  POKE -16368,0
  147. 6900 IF  PEEK (-16384)<128 THEN 6900: POKE -16368,0:RETURN 
  148. 6950 REM 
  149. 7100  POKE XADD+1,X: POKE XADD,X1
  150. 7200 RETURN 
  151. 7250 REM 
  152. 7450 REM 
  153. 7500 X1= PEEK (XADD):X= PEEK (XADD+1)
  154. 7550 RETURN 
  155. 7700 DIM Y$(80)
  156. 7750 GOSUB 8050:GOSUB 7800:Y$="":GOSUB 8100:GOSUB 7800:RETURN 
  157. 7800 Y$( LEN(Y$)+1)=" N E88AG"
  158. 7850 FOR I=1 TO  LEN(Y$)
  159. 7900  POKE 511+I, ASC(Y$(I)):NEXT I
  160. 7950  POKE 72,0:CALL -144
  161. 8000 RETURN 
  162. 8050 Y$="280:20 E3 03 84 02 85 03 A0 08 B1 02 85 00 C8 B1 02 85 01 60":RETURN 
  163. 8100 Y$="293:20 E3 03 20 D9 03 B0 06 A0 0D A9 00 91 02 60":RETURN 
  164.